const express = require("express");
const app = express();
// 将当前目录设置为静态资源
app.use(express.static(__dirname));
// 1- 直接在路由映射函数中通过req.on接收请求体数据
// 缺点：如果有多个路由需要接收请求体，需要在对应的路由中写同样的代码
// app.post("/my",(req,res)=>{
// 	let body = "";
// 	req.on("data",chunk=>{
// 		body+=chunk;
// 	});
// 	req.on("end",()=>{
// 		let obj = {};
// 		body.split("&").forEach(item=>{
// 			const [key,value] = item.split("=");
// 			obj[key] = value;
// 		})
// 		console.log(obj);
// 		res.end("post->info");
// 	})
// });

// 2- 通过app.use来处理请求体数据
// app.use((req, res, next) => {
// 	if (req.method === "POST") {
// 		let body = "";
// 		req.on("data", chunk => {
// 			body += chunk;
// 		});
// 		req.on("data", () => {
// 			req.body = {};
// 			body.split("&").forEach(item=>{
// 				const [key,value] = item.split("=");
// 				req.body[key] = value;
// 			})
// 			next();
// 		})
// 	} else next();
//
// })
// app.get("/my", (req, res) => {
// 	res.send("get->my");
// })
// app.post("/my", (req, res) => {
// 	console.log(req.body);
// 	res.end("post->info");
// })

// 3- 抽离函数
// const urlencoded = (req, res, next) => {
// 	if (req.method === "POST") {
// 		let body = "";
// 		req.on("data", chunk => {
// 			body += chunk;
// 		});
// 		req.on("data", () => {
// 			req.body = {};
// 			body.split("&").forEach(item=>{
// 				const [key,value] = item.split("=");
// 				req.body[key] = value;
// 			})
// 			next();
// 		})
// 	} else next();
// }
// app.use(urlencoded)
// app.post("/my", (req, res) => {
// 	console.log(req.body);
// 	res.end("post->info");
// })

// 4- 优化
// const urlencoded = () => {
// 	return (req, res, next) => {
// 		if (req.method === "POST") {
// 			let body = "";
// 			req.on("data", chunk => {
// 				body += chunk;
// 			});
// 			req.on("data", () => {
// 				req.body = {};
// 				body.split("&").forEach(item=>{
// 					const [key,value] = item.split("=");
// 					req.body[key] = value;
// 				})
// 				next();
// 			})
// 		} else next();
// 	}
// }
// app.use(urlencoded())
// app.post("/my", (req, res) => {
// 	console.log(req.body);
// 	res.end("post->info");
// })

// 5- 抽离
const myExpress = require("./modules/express");
app.use(myExpress.urlencoded())
app.post("/my", (req, res) => {
	console.log(req.body);
	res.end("post->info");
})

app.listen(80, () => {
	console.log("success");
})